package com.mj.listen1._11_哈希表;


public class Person {
//    private int age;
//    private float height;
//    private String name;
//
//    public Person(int age, float height, String name) {
//        this.age = age;
//        this.height = height;
//        this.name = name;
//    }
//
//    // Person对象的age,height,name相同, 就认为他们是同一个对象(放到hashMap里面同一个key，值覆盖)
//    @Override
//    public boolean equals(Object obj) {
//        // 传进来的obj 和 调用当前方法的对象 内存地址相同
//        if (this == obj) return true;
//        // 当前对象肯定不为空, 因为要调用equals方法, 若obj为null, obj和当前对象类型不同, 直接false
//        if (obj == null || obj.getClass() != this.getClass()) return false;
//        // 能到这里, 说明obj和this同一类型,且obj也不为空: 此时比较成员变量, 若他们的成员变量都是相同的, 返回true
//        Person person = (Person) obj;
//        return person.age == age
//                && person.height == height
//                && (person.name == null ? name == null : person.name.equals(name));
//    }
//
//    //这样只要Person对象的age,height,name相同, 它们的hashCode值必然相同，那么他们在map中存储的时候key的hash值也是相同的
//    @Override
//    public int hashCode() {
//        int hash = Integer.hashCode(age);
//        hash = hash * 31 + Float.hashCode(height);
//        hash = hash * 31 + (name != null ? name.hashCode() : 0);
//        return hash;
//    }
}
